package com.cxs.distributedgamedemo.util;
import ohos.app.Context;
import ohos.data.distributed.common.*;
import ohos.data.distributed.user.SingleKvStore;

public class KvStoreUtils {
    private static KvManager kvManager;
    private static SingleKvStore kvStore;
    static String storeId = "distributedApp";

    public static SingleKvStore getKvStore(Context context) {
        if (kvStore != null) {
            return kvStore;
        }
        // 根据应用上下文创建KvManagerConfig对象
        KvManagerConfig kvManagerConfig = new KvManagerConfig(context);
        // 创建分布式数据库管理器实例
        kvManager = KvManagerFactory.getInstance().createKvManager(kvManagerConfig);

        // 数据库配置
        Options options = new Options();
        // setCreateIfMissing：设置数据库不存在时是否创建
        // setEncrypt： 设置数据库是否加密
        // setKvStoreType： 设置分布式数据库的类型
        // setAutoSync： 设置数据库是否自动同步（默认true）
        options.setCreateIfMissing(true)
                .setEncrypt(false)
                .setKvStoreType(KvStoreType.SINGLE_VERSION);

        // 通过分布式数据库管理器实例获取数据库
        kvStore = kvManager.getKvStore(options, storeId);

        return kvStore;
    }

    public static void closeDB(SingleKvStore kvStore) {
        try {
            kvManager.closeKvStore(kvStore);
        }catch (KvStoreException e) {
            e.printStackTrace();
        }
    }

    public static void delDB() {
        try {
            kvManager.deleteKvStore(storeId);
        }catch (KvStoreException e) {
            e.printStackTrace();
        }
    }
}
